#include <REGX52.H>
#include "Delay.h"
#include "music.h"

unsigned char Key_KeyNumber;

/**
  * @brief  获取按键键码
  * @param  无
  * @retval 按下按键的键码，范围：0 16
  */
unsigned char Key(void)
{
	unsigned char Temp=0;
	Temp=Key_KeyNumber;
	Key_KeyNumber=0;
	return Temp;
}

/**
  * @brief  获取当前按键的状态，无消抖及松手检测
  * @param  无
  * @retval 按下按键的键码，范围：0 16
  */
unsigned char Key_GetState()
{
	unsigned char KeyNumber=0;
	
//	P1=0xFF;
//	P1_0=0;
//	if(P1_7==0){KeyNumber=1;}
//	if(P1_6==0){KeyNumber=4;}
//	if(P1_5==0){KeyNumber=7;}
//	if(P1_4==0){KeyNumber=10;}
//	
//	P1=0xFF;
//	P1_1=0;
//	if(P1_7==0){KeyNumber=2;}
//	if(P1_6==0){KeyNumber=5;}
//	if(P1_5==0){KeyNumber=8;}
//	if(P1_4==0){KeyNumber=11;}
//	
//	P1=0xFF;
//	P1_2=0;
//	if(P1_7==0){KeyNumber=3;}
//	if(P1_6==0){KeyNumber=6;}
//	if(P1_5==0){KeyNumber=9;}
//	if(P1_4==0){KeyNumber=12;}
//	
//	P1=0xFF;
//	P1_3=0;
//	if(P1_7==0){KeyNumber=13;}
//	if(P1_6==0){KeyNumber=14;}
//	if(P1_5==0){KeyNumber=15;}
//	if(P1_4==0){KeyNumber=16;}
	P2=0xFF;
	P2_7=0;
	if(P2_0==0){KeyNumber=1;}
	if(P2_1==0){KeyNumber=4;}
	if(P2_2==0){KeyNumber=7;}
	if(P2_3==0){KeyNumber=11;}
	
	P2=0xFF;
	P2_6=0;
	if(P2_0==0){KeyNumber=2;}
	if(P2_1==0){KeyNumber=5;}
	if(P2_2==0){KeyNumber=8;}
	if(P2_3==0){KeyNumber=10;}
	
	P2=0xFF;
	P2_5=0;
	if(P2_0==0){KeyNumber=3;}
	if(P2_1==0){KeyNumber=6;}
	if(P2_2==0){KeyNumber=9;}
	if(P2_3==0){KeyNumber=12;}
	
	P2=0xFF;
	P2_4=0;
	if(P2_0==0){KeyNumber=13;}
	if(P2_1==0){KeyNumber=14;}
	if(P2_2==0){KeyNumber=15;}
	if(P2_3==0){KeyNumber=16;}
	
	return KeyNumber;
}

/**
  * @brief  按键驱动函数，在中断中调用
  * @param  无
  * @retval 无
  */
void Key_Loop(void)
{
	static unsigned char NowState,LastState;
	LastState=NowState;				//按键状态更新
	NowState=Key_GetState();		//获取当前按键状态
	//如果上个时间点按键未按下，这个时间点按下，则是按下瞬间，以此消抖
	if(LastState==0 && NowState==1)
	{
		Key_KeyNumber=1;
	}
	if(LastState==0 && NowState==2)
	{
		Key_KeyNumber=2;
	}
	if(LastState==0 && NowState==3)
	{
		Key_KeyNumber=3;
	}
	if(LastState==0 && NowState==4)
	{
		Key_KeyNumber=4;
	}
	if(LastState==0 && NowState==5)
	{
		Key_KeyNumber=5;
	}
	if(LastState==0 && NowState==6)
	{
		Key_KeyNumber=6;
	}
	if(LastState==0 && NowState==7)
	{
		Key_KeyNumber=7;
	}
	if(LastState==0 && NowState==8)
	{
		Key_KeyNumber=8;
	}
	if(LastState==0 && NowState==9)
	{
		Key_KeyNumber=9;
	}
	if(LastState==0 && NowState==10)//0
	{
		Key_KeyNumber=10;
	}
	if(LastState==0 && NowState==11)//Delete(D)
	{  						
		Key_KeyNumber=11;		
	}
	if(LastState==0 && NowState==12)//Enter(E)
	{
		Key_KeyNumber=12;
	}
	if(LastState==0 && NowState==13)//a
	{
		Key_KeyNumber=13;
	}
	if(LastState==0 && NowState==14)//b
	{
		Key_KeyNumber=14;
	}
	if(LastState==0 && NowState==15)//c
	{
		Key_KeyNumber=15;
	}
	if(LastState==0 && NowState==16)//d
	{
		Key_KeyNumber=16;
	}
	
	
	
	
}
